// 导入模型（如果数据库可用时使用）
const goodsModel = require('../models/goods');

// 模拟商品数据 - 当数据库不可用时使用
const mockGoodsList = [
  {
    id: 1,
    title: '琴牌展示1',
    description: '这是第一个琴牌的详细描述信息，包含了琴牌的历史背景和特点。',
    price: 899,
    image: '/pages/tabBar/home.png',
    tag: '热门',
    details: '这是商品的详细介绍内容，包括商品的材质、工艺、尺寸等详细信息。琴牌采用优质材料制作，经过多道工序精心打造而成，具有很高的收藏价值和艺术价值。',
    specifications: [
      { name: '材质', value: '优质木材' },
      { name: '尺寸', value: '20x10cm' },
      { name: '重量', value: '约300g' },
      { name: '包装', value: '精美礼盒' }
    ],
    created_at: new Date(),
    updated_at: new Date()
  },
  {
    id: 2,
    title: '琴牌展示2',
    description: '这是第二个琴牌的详细描述信息，展示了不同风格的琴牌设计。',
    price: 1299,
    image: '/pages/tabBar/home.png',
    tag: '新品',
    details: '这是商品的详细介绍内容，包括商品的材质、工艺、尺寸等详细信息。琴牌采用优质材料制作，经过多道工序精心打造而成，具有很高的收藏价值和艺术价值。',
    specifications: [
      { name: '材质', value: '优质木材' },
      { name: '尺寸', value: '20x10cm' },
      { name: '重量', value: '约300g' },
      { name: '包装', value: '精美礼盒' }
    ],
    created_at: new Date(),
    updated_at: new Date()
  },
  {
    id: 3,
    title: '琴牌展示3',
    description: '这是第三个琴牌的详细描述信息，介绍了传统工艺的琴牌制作过程。',
    price: 1599,
    image: '/pages/tabBar/home.png',
    tag: '推荐',
    details: '这是商品的详细介绍内容，包括商品的材质、工艺、尺寸等详细信息。琴牌采用优质材料制作，经过多道工序精心打造而成，具有很高的收藏价值和艺术价值。',
    specifications: [
      { name: '材质', value: '优质木材' },
      { name: '尺寸', value: '20x10cm' },
      { name: '重量', value: '约300g' },
      { name: '包装', value: '精美礼盒' }
    ],
    created_at: new Date(),
    updated_at: new Date()
  }
];

// 获取商品列表
exports.getGoodsList = async (req, res) => {
  try {
    const { page = 1, pageSize = 10 } = req.query;
    
    try {
      // 尝试从数据库获取数据
      const goodsList = await goodsModel.getGoodsList(parseInt(page), parseInt(pageSize));
      res.json({
        success: true,
        data: goodsList,
        total: goodsList.length,
        message: '获取商品列表成功（数据库）'
      });
    } catch (dbError) {
      console.warn('数据库查询失败，使用模拟数据:', dbError.message);
      // 从模拟数据中根据分页参数获取数据
      const startIndex = (parseInt(page) - 1) * parseInt(pageSize);
      const endIndex = startIndex + parseInt(pageSize);
      const paginatedMockData = mockGoodsList.slice(startIndex, endIndex);
      
      res.json({
        success: true,
        data: paginatedMockData,
        message: '获取商品列表成功（模拟数据）',
        total: mockGoodsList.length,
        page: parseInt(page),
        pageSize: parseInt(pageSize)
      });
    }
  } catch (error) {
    console.error('获取商品列表失败:', error);
    res.status(500).json({ success: false, message: '获取商品列表失败，请稍后重试' });
  }
};

// 获取商品详情
exports.getGoodsDetail = async (req, res) => {
  try {
    const { id } = req.params;
    if (!id) {
      return res.status(400).json({ success: false, message: '缺少商品ID' });
    }
    
    try {
      // 尝试从数据库获取商品详情
      const goods = await goodsModel.getGoodsById(parseInt(id));
      
      if (!goods) {
        return res.status(404).json({ success: false, message: '商品不存在' });
      }
      
      res.json({
        success: true,
        data: goods,
        message: '获取商品详情成功（数据库）'
      });
    } catch (dbError) {
      console.warn('数据库查询失败，使用模拟数据:', dbError.message);
      // 从模拟数据中查找商品详情
      const mockGoodsDetail = mockGoodsList.find(item => item.id === parseInt(id));
      
      if (!mockGoodsDetail) {
        return res.status(404).json({ success: false, message: '商品不存在' });
      }
      
      res.json({
        success: true,
        data: mockGoodsDetail,
        message: '获取商品详情成功（模拟数据）'
      });
    }
  } catch (error) {
    console.error('获取商品详情失败:', error);
    res.status(500).json({ success: false, message: '获取商品详情失败，请稍后重试' });
  }
};